class Solution {//LCR130——衣橱整理
private:
    int dx[4]={0,0,-1,1};
    int dy[4]={1,-1,0,0};
    bool is_count(int i,int j){
        int sum=0;
        while(i){
            sum+=i%10;
            i/=10;
        }
        while(j){
            sum+=j%10;
            j/=10;
        }
        return sum<=_cnt;
    }
    void dfs(int i,int j){
        vis[i][j]=true;
        ret++;
        for(int k=0;k<4;k++){
            int y=i+dy[k];
            int x=j+dx[k];
            if(x>=0&&x<_n&&y>=0&&y<_m&&!vis[y][x]&&is_count(y,x)){
                dfs(y,x);
            }
        }
    }
public:
    int wardrobeFinishing(int m, int n, int cnt) {
        vis.resize(m,vector<bool>(n,false));
        _cnt=cnt;
        _m=m;
        _n=n;
        dfs(0,0);
        return ret;
    }
private:
    int _m;
    int _n;
    vector<vector<bool>> vis;
    int ret;
    int _cnt;
};